package com.gmp.product.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import java.util.List;

import com.gmp.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gmp.product.mapper.ProductionOrderMapper;
import com.gmp.product.domain.ProductionOrder;
import com.gmp.product.service.IProductionOrderService;

/**
 * 生产指令Service业务层处理
 *
 * @author Koi
 * @date 2025-09-23
 */
@Service
public class ProductionOrderServiceImpl extends ServiceImpl<ProductionOrderMapper, ProductionOrder> implements IProductionOrderService {
    @Autowired
    private ProductionOrderMapper productionOrderMapper;

    /**
     * 查询生产指令
     *
     * @param id 生产指令主键
     * @return 生产指令
     */
    @Override
    public ProductionOrder selectProductionOrderById(String id) {
        return productionOrderMapper.selectProductionOrderById(id);
    }

    /**
     * 查询生产指令列表
     *
     * @param productionOrder 生产指令
     * @return 生产指令
     */
    @Override
    public List<ProductionOrder> selectProductionOrderList(ProductionOrder productionOrder) {
        return productionOrderMapper.selectProductionOrderList(productionOrder);
    }

    /**
     * 新增生产指令
     *
     * @param productionOrder 生产指令
     * @return 结果
     */
    @Override
    public int insertProductionOrder(ProductionOrder productionOrder) {
        productionOrder.setCreateTime(DateUtils.getNowDate());
        return productionOrderMapper.insertProductionOrder(productionOrder);
    }

    /**
     * 修改生产指令
     *
     * @param productionOrder 生产指令
     * @return 结果
     */
    @Override
    public int updateProductionOrder(ProductionOrder productionOrder) {
        productionOrder.setUpdateTime(DateUtils.getNowDate());
        return productionOrderMapper.updateProductionOrder(productionOrder);
    }

    /**
     * 批量删除生产指令
     *
     * @param ids 需要删除的生产指令主键
     * @return 结果
     */
    @Override
    public int deleteProductionOrderByIds(String[] ids) {
        return productionOrderMapper.deleteProductionOrderByIds(ids);
    }

    /**
     * 删除生产指令信息
     *
     * @param id 生产指令主键
     * @return 结果
     */
    @Override
    public int deleteProductionOrderById(String id) {
        return productionOrderMapper.deleteProductionOrderById(id);
    }

    @Override
    public boolean updateDispatchStatus(String OrderCode,Long status) {
        LambdaQueryWrapper<ProductionOrder> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ProductionOrder::getOrderCode, OrderCode);
        ProductionOrder productionOrder = this.getOne(queryWrapper);
        productionOrder.setProductionStatus(status);//派单状态0-未派单 1-待接单 2-已接单 3-已完成 4-有异常
        return  update(productionOrder, queryWrapper);
    }


}
